本文以常见的互联网公司敏捷开发方式为例, 简要说明一个需求迭代过程中所需的各种能力.

阶段一: 方案设计

  1. 开发需求文档的理解(抓住重点, 主要关注数据的流向, 从哪里来到哪里去?)
  2. 现有工程代码梳理, 快速定位代码所在(数据流向)
  3. html页面/app(http接口)-->chrome开发者工具/抓包工具-->http协议-->nginx-->java的Controller-->db
  4. uml图绘制: 流程图, 用例图, 时序图等(非必备)
  5. 服务间交互方式选型, 各种交互方式的适用场景和优缺点(rpc, http, mq等)
  6. 数据存储: 建库建表规范, 数据存储选型(db, redis缓存, 内存缓存)

阶段二: 代码开发&自测

  1. git的常用操作: 分支管理, 代码提交更新, 代码merge, 冲突解决, tag概念等, 提交记录查看等;
  2. 代码开发: 编码规范, 异常处理, 日志打印规范, 文档注释规范, 关键指标监控埋点, 常量的选择(代码写死, 配置文件配置, 动态配置)
  3. maven的使用: maven的生命周期, 依赖原理, 版本冲突解决, profile切换等
  4. 数据库的操作: 增删改查sql,
  5. 自测调试: 单元/集成测试 (非必备), 本地调试技巧

阶段三: 联调测试

联调(前后端联调, 微服务间联调):
  1. mock数据
  2. 接口测试工具postman的使用
测试
  1. linux开发机ssh登录与配置
  2. linux下业务日志查看, 开启远程调试端口, 本地ide连接远程机器进行调试

阶段三: 提交测试

本阶段同联调测试, 将代码最终提交给qa同学测试, 期间需要关注qa同学提供的bug并解决

阶段四: 发布上线

  1. linux下文件的增删改查, vim的简单使用, 进程线程的查看, 机器信息查看(cpu, 内存, 网络状态, 磁盘空间),jvm常用参数的含义
  2. 熟悉tomcat/springboot部署过程, 启动日志的查看, 启动成功/失败的识别(healthcheck)

阶段四: 线上问题处理

  1. linux下业务日志查看
  2. linux下pid的查看, 进程/线程信息的查看
  3. linux下jdk常用工具: jinfo, jmap, jstack
  4. 非侵入式调试工具(btrace, Arthas), 性能分析工具async-profile, gc原理及gc日志查看,
    内存分析工具mat的使用

其他

此外,除上述的技术硬实力外, 还需要有诸多工作上软实力, 如

  1. 如何合理拒绝pm的临时需求/需求变更
  2. 如何和qa搞好关系少提bug
  3. 个人时间管理
  4. 协调合作团队, 共同推进项目如期上线

zhoujian6578
192 声望0 粉丝